<?php

class BoolExpr
{

  public static function parse($expr)
  {
    return self::_parse($expr);
  }

  protected static function _parse($expr, $and = true)
  {
    if (empty($expr)) {
      return null;
    }

    if (! is_array($expr)) {
      return $expr;
    }

    if (count($expr) == 1) {
      return $expr[0];
    }

    foreach ($expr as &$v) {
      $v = self::_parse($v, ! $and);
    }

    $s = '(' . implode($and ? ' AND ' : ' OR ', $expr) . ')';

    return $s;
  }

}

?>